import 'package:gameplay_flutter/generated/json/base/json_field.dart';
import 'package:gameplay_flutter/generated/json/address_info_entity.g.dart';
import 'dart:convert';
export 'package:gameplay_flutter/generated/json/address_info_entity.g.dart';

@JsonSerializable()
class AddressInfoEntity {
	@JSONField(name: "plus_code")
	late AddressInfoPlusCode plusCode;
	late List<AddressInfoResults> results = [];
	late String status = '';

	AddressInfoEntity();

	factory AddressInfoEntity.fromJson(Map<String, dynamic> json) => $AddressInfoEntityFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoEntityToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoPlusCode {
	@JSONField(name: "compound_code")
	late String compoundCode = '';
	@JSONField(name: "global_code")
	late String globalCode = '';

	AddressInfoPlusCode();

	factory AddressInfoPlusCode.fromJson(Map<String, dynamic> json) => $AddressInfoPlusCodeFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoPlusCodeToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoResults {
	@JSONField(name: "address_components")
	late List<AddressInfoResultsAddressComponents> addressComponents = [];
	@JSONField(name: "formatted_address")
	late String formattedAddress = '';
	late AddressInfoResultsGeometry geometry;
	@JSONField(name: "navigation_points")
	late List<AddressInfoResultsNavigationPoints> navigationPoints = [];
	@JSONField(name: "place_id")
	late String placeId = '';
	@JSONField(name: "plus_code")
	late AddressInfoResultsPlusCode plusCode;
	late List<String> types = [];

	AddressInfoResults();

	factory AddressInfoResults.fromJson(Map<String, dynamic> json) => $AddressInfoResultsFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoResultsToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoResultsAddressComponents {
	@JSONField(name: "long_name")
	late String longName = '';
	@JSONField(name: "short_name")
	late String shortName = '';
	late List<String> types = [];

	AddressInfoResultsAddressComponents();

	factory AddressInfoResultsAddressComponents.fromJson(Map<String, dynamic> json) => $AddressInfoResultsAddressComponentsFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoResultsAddressComponentsToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoResultsGeometry {
	late AddressInfoResultsGeometryLocation location;
	@JSONField(name: "location_type")
	late String locationType = '';
	late AddressInfoResultsGeometryViewport viewport;

	AddressInfoResultsGeometry();

	factory AddressInfoResultsGeometry.fromJson(Map<String, dynamic> json) => $AddressInfoResultsGeometryFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoResultsGeometryToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoResultsGeometryLocation {
	late double lat;
	late double lng;

	AddressInfoResultsGeometryLocation();

	factory AddressInfoResultsGeometryLocation.fromJson(Map<String, dynamic> json) => $AddressInfoResultsGeometryLocationFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoResultsGeometryLocationToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoResultsGeometryViewport {
	late AddressInfoResultsGeometryViewportNortheast northeast;
	late AddressInfoResultsGeometryViewportSouthwest southwest;

	AddressInfoResultsGeometryViewport();

	factory AddressInfoResultsGeometryViewport.fromJson(Map<String, dynamic> json) => $AddressInfoResultsGeometryViewportFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoResultsGeometryViewportToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoResultsGeometryViewportNortheast {
	late double lat;
	late double lng;

	AddressInfoResultsGeometryViewportNortheast();

	factory AddressInfoResultsGeometryViewportNortheast.fromJson(Map<String, dynamic> json) => $AddressInfoResultsGeometryViewportNortheastFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoResultsGeometryViewportNortheastToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoResultsGeometryViewportSouthwest {
	late double lat;
	late double lng;

	AddressInfoResultsGeometryViewportSouthwest();

	factory AddressInfoResultsGeometryViewportSouthwest.fromJson(Map<String, dynamic> json) => $AddressInfoResultsGeometryViewportSouthwestFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoResultsGeometryViewportSouthwestToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoResultsNavigationPoints {
	late AddressInfoResultsNavigationPointsLocation location;

	AddressInfoResultsNavigationPoints();

	factory AddressInfoResultsNavigationPoints.fromJson(Map<String, dynamic> json) => $AddressInfoResultsNavigationPointsFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoResultsNavigationPointsToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoResultsNavigationPointsLocation {
	late double latitude;
	late double longitude;

	AddressInfoResultsNavigationPointsLocation();

	factory AddressInfoResultsNavigationPointsLocation.fromJson(Map<String, dynamic> json) => $AddressInfoResultsNavigationPointsLocationFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoResultsNavigationPointsLocationToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}

@JsonSerializable()
class AddressInfoResultsPlusCode {
	@JSONField(name: "compound_code")
	late String compoundCode = '';
	@JSONField(name: "global_code")
	late String globalCode = '';

	AddressInfoResultsPlusCode();

	factory AddressInfoResultsPlusCode.fromJson(Map<String, dynamic> json) => $AddressInfoResultsPlusCodeFromJson(json);

	Map<String, dynamic> toJson() => $AddressInfoResultsPlusCodeToJson(this);

	@override
	String toString() {
		return jsonEncode(this);
	}
}